﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
using SecurityAgent;

namespace SecurityAgentServiceTest
{
    [TestFixture]
    public class MembershipProviderTest
    {
        private MembershipServiceReference.MembershipProviderServiceClient m_membershipClient;
        
        //private RoleServiceReference.RoleProviderServiceClient m_roleClient;
        
        //private ProfileServiceReference.ProfileProviderServiceClient m_profileClient;
        
        //private FieldServiceReference.FieldSecurityServiceClient m_fieldSecurityClient;
        
        //private ObjectServiceReference.ObjectSecurityServiceClient m_objectSecurityClient;

        [TestFixtureSetUp]
        public void Init()
        {
            m_membershipClient = new MembershipServiceReference.MembershipProviderServiceClient();
            //m_fieldSecurityClient = new FieldServiceReference.FieldSecurityServiceClient();
            //m_roleClient = new RoleServiceReference.RoleProviderServiceClient();
            //m_profileClient = new ProfileServiceReference.ProfileProviderServiceClient();
            //m_objectSecurityClient = new ObjectServiceReference.ObjectSecurityServiceClient();
        }
        
        [Test]
        [ExpectedException(typeof(GeneralSecurityException))]
        public void GetEnablePasswordResetWithNullApplication()
        {
            m_membershipClient.GetEnablePasswordReset(String.Empty);
        }

        [Test]
        public void GetEnablePasswordRetrieval(string applicationKey)
        {
        }

        [Test]
        public void GetMinRequiredPasswordLength(string applicationKey)
        {
        }

        [Test]
        public void GetPasswordAttemptWindow(string applicationKey)
        {
        }

        [Test]
        public void GetPasswordFormat(string applicationKey)
        {
        }

        [Test]
        public void GetPasswordStrengthRegularExpression()
        {
        }

        [Test]
        public void GetRequiresQuestionAndAnswer()
        {}

        [Test]
        public void GetRequiresUniqueEmail(string applicationKey) { }

        [Test]
        public void GetMaxInvalidPasswordAttempt(string applicationKey) { }

        [Test]
        public void GetMinRequiredNonAlphanumericCharacters(string applicationKey) { }

        [Test]
        public void  ChangePassword()
        {
        }

        [Test]
        public void  ChangePasswordQuestionAndAnswer()
        {
        }

        [Test]
        public void CreateUser()
        {
        }

        [Test]
        public void DeleteUser()
        {
        }

        [Test]
        public void FindUsersByEmail()
        {
        }

        [Test]
        public void FindUsersByName()
        {
        }

        [Test]
        public void GetAllUsers()
        {
        }

        [Test]
        public void GetNumberOfUsersOnline()
        {
        }

        [Test]
        public void GetPassword()
        {
        }

        [Test]
        public void GetUserByUserName()
        {
        }

        [Test]
        public void GetUserByKey()
        {
        }

        [Test]
        public void GetUserNameByEmail()
        {
        }

        [Test]
        public void ResetPassword()
        {
        }

        [Test]
        public void UnlockUser()
        {
        }

        [Test]
        public void UpdateUser(string applicationKey, string operatorToken, string userName, SecurityPrincipal user) { }

        [Test]
        public void ValidateUser(string applicationKey, string username, string password) { }

        [Test]
        public void ValidateAndRegisterUser(string applicationKey, string username, string password) { }

        [Test]
        public void ObtainServiceUserByToken(string serviceApp, object userToken) { }

        [Test]
        public void ExpireToken(string applicationKey, object userToken) { }
        
    }
}
